package com.icinfo.cloud.provider.punish.common.csourcedocumentoperate.service;

import com.icinfo.cloud.provider.punish.common.csourcedocumentoperate.dto.CSourceDocCommonHtmlRequest;
import com.icinfo.cloud.provider.punish.common.csourcedocumentoperate.dto.CSourceDocCommonOperateSaveDto;
import com.icinfo.cloud.provider.punish.common.documentoperate.dto.StageDocCommonHtmlRequest;
import com.icinfo.cloud.provider.punish.common.documentoperate.dto.StageDocCommonOperateSaveDto;
import com.icinfo.cloud.provider.punish.common.documentoperate.dto.StageDocCommonPreviewDto;
import com.icinfo.cloud.provider.punish.common.documentoperate.vo.DocumentCommonFormDataVo;
import com.icinfo.cloud.provider.punish.common.documentoperate.vo.DocumentCommonFormHtmlVo;
import com.icinfo.cloud.provider.punish.common.seal.dto.FileSealInfoQueryDto;
import com.icinfo.framework.common.web.Result;

import java.util.Map;

/**
 * 描述：文书阶段公共操作接口
 *
 * @author xiangyuyu
 * @date 2022/2/16 21:07
 */
public interface ICSourceDocCommonOperateService {
    /**
     * 【V1.0.0】描述：保存文书信息通用接口
     *
     * @param saveDto {@link StageDocCommonOperateSaveDto}
     * @return {@link Result <String>} 保存结果
     * @author xiangyuyu
     * @date 2022-02-16 20:58
     */
    Map<String, Object> saveDocInfo(CSourceDocCommonOperateSaveDto saveDto);

    /**
     * 获取文书html公共方法
     *
     * @param request
     * @return {@link Result< String>}
     * @author liyafeng
     * @date 2022/2/18
     */
    DocumentCommonFormHtmlVo getDocumentFormHtml(CSourceDocCommonHtmlRequest request);

    /**
     * 获取通用文书表单数据
     *
     * @param request 请求
     * @return {@link DocumentCommonFormDataVo }
     * @author shishengyao
     * @date 2022/03/06
     */
    DocumentCommonFormDataVo getCommonDocumentFormData(CSourceDocCommonHtmlRequest request);



    /**
     * 描述：【V1.0.0】文书文号生成
     *
     * @author tianrunjia
     * @date 2022-02-23
     */
    String getDocumentNumber(String caseId, String documentCatalogCode);



    /**
     * 文件签章并上传到oss
     *
     * @param queryDto 查询dto
     * @return {@link Map<String, String> }
     * @author shishengyao
     * @date 2022/03/07
     */
    String dealFileSeal(FileSealInfoQueryDto queryDto);


    /**
     * 根据文书目录编码获取法人或个人文件模板code
     *
     * @param documentCatalogCode 文书目录编码
     * @param caseSourceId              案件id
     * @param paramMap            其他参数map
     * @return {@link String}
     * @author liyafeng
     * @date 2022/3/1
     */
    String getTemplateCodeByDocumentCatalogCode(String documentCatalogCode, String caseSourceId, Map<String, Object> paramMap);
}
